package sadasd;

import DesignMode.Command.Command;

import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.HashSet;

/**
 * @author VX5
 * @Title: MJC
 * @ProjectName DataStructure
 * @Description: TODO
 * @date ${DAT}21:10
 */
public class Test {
    public static void main(String[] args) {
//
//        Complex c1 = new Complex();
//        String s;
//        System.out.println(s);
    }

    class Complex{
        private double re,im;

        @Override
        public String toString() {
            return "("+re+"+" + im + "i)";
        }

        Complex(Complex c) {
            re = c.re;
            im = c.im;
        }
    }


//    public int hammingWeight(int n) {//>>右移方法会引起死循环 当n为复数的时候 因为负数的二进制为补码，右移时左边高位是补的1
//        int count = 0;
//        while (n != 0) {
//            /*
//             * 用1和n进行位与运算，
//             * 结果要是为1则n的2进制形式
//             * 最右边那位肯定是1，否则为0
//             */
//            int index = n & 1;
//            if ((n & 1) == 1) {//此时会将N二进制化来比较
//                count++;
//            }
//            //把n的2进制形式往右推一位
//            n = n << 1;
//        }dsfadfasdfasdf
//        return count;
//    }

    public int hammingWeight(int n) {//>>右移方法会引起死循环 当n为复数的时候 因为负数的二进制为补码，右移时左边高位是补的1
      int count = 0;
      while (n !=0){
          count++;
          n = (n-1)&n;
      }
      return count;
    }

}
